<?php
namespace app\common\components;

/**
 * 作为登录管理的用户模型必须实现该借口
 */
interface IdentityInterface
{
    /**
     * 获取用户实例根据id
     */
    public static function findIdentity($id);

    /**
     * 根据token获取用户实例
     */
    public static function findIdentityByAccessToken($token, $type = null);

    /**
     * 获取当前实例的id
     */
    public function getId();

    /**
     * 获取当前实例的auth key
     */
    public function getAuthKey();

    /**
     * 验证auth key(登录凭证).
     */
    public function validateAuthKey($authKey);

    /**
     * 登录之前
     */
    public function beforeLogin(): bool;

    /**
     * 登录之后
     */
    public function afterLogin();

    /**
     * 退出之前
     */
    public function beforeLogout(): bool;

    /**
     * 退出之后
     */
    public function afterLogout();
}